package com.iptv.grape.jss.impls.listener;

import android.os.Handler;
import android.webkit.JavascriptInterface;

/****
 * 网页交互监听
 */
public class VideoCallBack {
    private VideoBackImpl videoBackImp;
    public VideoCallBack(VideoBackImpl videoBackImp){
        this.videoBackImp = videoBackImp;
    }
    private Handler mHandler = new Handler();
	/** 2.1.2  播放视频 **/
	@JavascriptInterface
	public void playUrlVideo(String url){
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                videoBackImp.playUrlVideoImpl(url);
            }});
	}

    /**
     * 2.1.3
     * 指定位置播放
     * @param url
     * @param left 左上角x轴坐标
     * @param top   左上角Y轴坐标
     * @param width 播放器宽度
     * @param height 播放器高度
     * @param isLoop 是否循环播放
     */
    @JavascriptInterface
    public void playUrlVideo(String url, int left, int top, int width, int height, boolean isLoop){
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                videoBackImp.playUrlVideoImpl(url,left,top,width,height,isLoop);
            }
        });

    }

    /**
     * 2.1.4
     * 设置小屏幕播放位置
     * @param left 左上角x轴坐标
     * @param top   左上角Y轴坐标
     * @param width 播放器宽度
     * @param height 播放器高度
     */
    @JavascriptInterface
    public void setPosition(int left, int top, int width, int height) {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                videoBackImp.setPositionImpl(left, top, width, height);
            }});
    }
    /** 2.1.5  全屏播放 **/
    @JavascriptInterface
    public void playFullScreen(){
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                videoBackImp.playFullScreenImpl();
            }});
    }

    /** 2.1.7  暂停播放 **/
    @JavascriptInterface
    public void pause(){
        videoBackImp.pauseImpl();
    }

    /** 2.1.8  播放 **/
    @JavascriptInterface
    public void play(){
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                videoBackImp.playImpl();
            }});
    }

    /**
     * 2.1.9
     * seek
     * @param sec 指定毫秒数
     */
    @JavascriptInterface
    public void seek(int sec){
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                videoBackImp.seekImpl(sec);
            }});
    }

    /** 2.1.10  关闭播放器 **/
    @JavascriptInterface
    public void closeVideo(){
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                videoBackImp.closeVideoImpl();
            }});
    }

    /** 2.1.11 是否正在播放 **/
    @JavascriptInterface
    public boolean isPlaying(){

                return videoBackImp.isPlayingImpl();
    }
    /** 2.1.12  获得总时长【单位毫秒】 **/
    @JavascriptInterface
    public int getTotalTime(){
        return videoBackImp.getTotalTimeImpl();
    }

    /** 2.1.13  获得当前时长【单位毫秒】 **/
    @JavascriptInterface
    public int getCurrentTime(){
        return videoBackImp.getCurrentTimeImpl();
    }


    public interface VideoBackImpl{

        /** 2.1.2  播放视频 **/
         void playUrlVideoImpl(String url);

        /**
         * 2.1.3
         * 指定位置播放
         * @param url
         * @param left 左上角x轴坐标
         * @param top   左上角Y轴坐标
         * @param width 播放器宽度
         * @param height 播放器高度
         * @param isLoop 是否循环播放
         */
        void playUrlVideoImpl(String url, int left, int top, int width, int height, final boolean isLoop);

        /**
         * 2.1.4
         * 设置小屏幕播放位置
         * @param left 左上角x轴坐标
         * @param top   左上角Y轴坐标
         * @param width 播放器宽度
         * @param height 播放器高度
         */
       void setPositionImpl(int left, int top, int width, int height);

        /** 2.1.5  全屏播放 **/
       void playFullScreenImpl();

        /** 2.1.7  暂停播放 **/
        void pauseImpl();

        /** 2.1.8  播放 **/
        @JavascriptInterface
        void playImpl();

        /**
         * 2.1.9
         * seek
         * @param sec 指定毫秒数
         */
        void seekImpl(int sec);

        /** 2.1.10  关闭播放器 **/
        void closeVideoImpl();

        /** 2.1.11 是否正在播放 **/
         boolean isPlayingImpl();
        /** 2.1.12  获得总时长【单位毫秒】 **/
        int getTotalTimeImpl();

        /** 2.1.13  获得当前时长【单位毫秒】 **/
        int getCurrentTimeImpl();

    }



}
